package cn.shoukaiseki.sjf4j;

import cn.shoukaiseki.sjf4j.node.TreeNode;

public interface Sjf4j {

    /**
     * 对象转换成json字符串
     * @param obj       要转换的对象
     * @return          json字符串
     * @throws JsonException 如果发生解析错误
     */
    String toJsonString(Object obj) ;

    /**
     * json字符串转对象
     * @param json    要解析的json字符串
     * @param clazz  {@link T}的指定类
     * @return {@link T} or {@code null}
     * @throws JsonException 如果发生解析错误
     */
    <T> T jsonToObj(String json,Class<T> clazz);

    /**
     * 解析json字符串,也可使用 {@link #jsonToArrayNode(String)} 或者 {@link #jsonToObjectNode(String)}}
     * @return
     */
    TreeNode jsonToObj(String json);

    TreeNode jsonToArrayNode(String json);

    TreeNode jsonToObjectNode(String json);
}
